﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media;

namespace Wormhole.UI.Application.Theme
{
	/// <author>Rodney McKay</author>
	/// <date>28 March 2008</date>
	/// <summary>
	/// This class is used to contain display settings like colors and the URIs of
	/// images in the User Interface
	/// </summary>
	public static class Theme
	{
		#region Player
		public static class Player
		{

			/// <summary>
			/// The theme for a player.
			/// </summary>
			public interface IPlayer
			{
				Brush TitleBrush { get; }
				Color TitleColor { get; }
				string ScoreImage { get; }
				string PlayerImage { get; }
			}

			#region Player 1
			/// <summary>
			/// The player 1 display theme.
			/// </summary>
			public static Player1Class Player1 = new Player1Class();

			/// <summary>
			/// The class implementing the player properties
			/// </summary>
			public class Player1Class : IPlayer
			{
				public Brush TitleBrush
				{
					get { return Brushes.LightGreen; }
				}

				public Color TitleColor
				{
					get { return Colors.Green; }
				}

				public string ScoreImage
				{
					get { return "/Wormhole.UI.Application;component/images/theme/score01.png"; }
				}

				public string PlayerImage
				{
					get { return "/Wormhole.UI.Application;component/images/theme/player01.png"; }
				}
			}
			#endregion

			#region Player 2
			/// <summary>
			/// The player 1 display theme.
			/// </summary>
			public static Player2Class Player2 = new Player2Class();

			/// <summary>
			/// The class implementing the player properties
			/// </summary>
			public class Player2Class : IPlayer
			{
				public Brush TitleBrush
				{
					get { return Brushes.Red; }
				}

				public Color TitleColor
				{
					get { return Colors.Red; }
				}

				public string ScoreImage
				{
					get { return "/Wormhole.UI.Application;component/images/theme/score02.png"; }
				}

				public string PlayerImage
				{
					get { return "/Wormhole.UI.Application;component/images/theme/player02.png"; }
				}
			}
			#endregion
		}
		#endregion

		#region Power
		public static class Power
		{
			#region Player Power
			/// <summary>
			/// The theme for a player power line.
			/// </summary>
			public interface IPlayerPower
			{
				Color GradientColor { get; }
				string IconUrl { get; }
			}

			#region Villian Power
			/// <summary>
			/// The villian power theme.
			/// </summary>
			public static VillianPowerClass VillianPower = new VillianPowerClass();

			/// <summary>
			/// Class implementing the villian player power theme.
			/// </summary>
			public class VillianPowerClass : IPlayerPower
			{
				public Color GradientColor
				{
					get { return Color.FromArgb(49, 255, 0, 0); }
				}

				public string IconUrl
				{
					get { return "/Wormhole.UI.Application;component/images/theme/villian.png"; }
				}
			}
			#endregion

			#region Hero Power
			/// <summary>
			/// The hero power theme.
			/// </summary>
			public static HeroPowerClass HeroPower = new HeroPowerClass();

			/// <summary>
			/// Class implementing the hero player power theme.
			/// </summary>
			public class HeroPowerClass : IPlayerPower
			{
				public Color GradientColor
				{
					get { return Color.FromArgb(49, 0, 0, 255); }
				}

				public string IconUrl
				{
					get { return "/Wormhole.UI.Application;component/images/theme/hero.png"; }
				}
			}
			#endregion

			#endregion
		}
		#endregion

		#region Score Glyph
		/// <summary>
		/// The theme used glyphs earned on hero cards.
		/// </summary>
		public static class ScoreGlyph
		{
			#region Numbers
			/// <summary>
			/// The number images.
			/// </summary>
			public static class Numbers
			{
				public const string Number1 = "/Wormhole.UI.Application;component/images/glyphs/1.png";
				public const string Number2 = "/Wormhole.UI.Application;component/images/glyphs/2.png";
				public const string Number3 = "/Wormhole.UI.Application;component/images/glyphs/3.png";
				public const string Number4 = "/Wormhole.UI.Application;component/images/glyphs/4.png";
				public const string Number5 = "/Wormhole.UI.Application;component/images/glyphs/5.png";
				public const string Number6 = "/Wormhole.UI.Application;component/images/glyphs/6.png";
				public const string Number7 = "/Wormhole.UI.Application;component/images/glyphs/7.png";
				public const string Number8 = "/Wormhole.UI.Application;component/images/glyphs/8.png";
				public const string Number9 = "/Wormhole.UI.Application;component/images/glyphs/9.png";
			}
			#endregion

			#region Glyphs
			/// <summary>
			/// The glyph images
			/// </summary>
			public static class Glyphs
			{
				public const string Gemini = "/Wormhole.UI.Application;component/images/glyphs/Gemini.png";
				public const string Libra = "/Wormhole.UI.Application;component/images/glyphs/Libra.png";
				public const string Orion = "/Wormhole.UI.Application;component/images/glyphs/OrionLarge.png";
				public const string Pisces = "/Wormhole.UI.Application;component/images/glyphs/Pisces.png";
				public const string Scorpius = "/Wormhole.UI.Application;component/images/glyphs/Scorpius.png";
				public const string Triangulum = "/Wormhole.UI.Application;component/images/glyphs/Triangulum.png";
			}
			#endregion

			#region SkillColors
			/// <summary>
			/// The skill colors.
			/// </summary>
			public static class SkillColors
			{
				public static readonly Color Culture = Color.FromRgb(253, 255, 0);
				public static readonly Color Science = Color.FromRgb(30, 255, 0);
				public static readonly Color Combat = Color.FromRgb(255, 21, 0);
				public static readonly Color Ingenuity = Color.FromRgb(0, 199, 255);
			}
			#endregion
		}
		#endregion
	}

}
